#ifndef OPERATE_H
#define OPERATE_H

#include <stdio.h>
#include <stdlib.h>

#include "LinkStack.h"

// 设计入栈的数据类型
typedef struct MYCHAR {
    LinkNode node;

    char* p;
}MyChar;

MyChar* Creat_MyChar(char* p);

// 先识别数字
int Is_Number(char c);

// 识别左括号
int Is_Left(char c);

// 识别右括号
int Is_Right(char c);

// 识别时不时运算符
int Is_Operator(char c);

// 判断运算符的优先级
int Get_Priority(char c);

// 处理数字、左括号、右括号的操作
void Number_Operatr(char* p);

// 左括号的操作 --> 入栈
void Left_Operate(LinkStack* stack, char* p);

// 对右括号的操作 --> 挨个弹出栈顶元素并输出，直到匹配到左括号
void Right_Operate(LinkStack* stack);

// 运算符的操作: 要用拿到的运算符和栈顶运算符做比较
void Operator_Operate(LinkStack* stack, char* p);

#endif
